fix: double counting for the usage in stream mode for anthropic models - #2239
Conversation
Signed-off-by: yxia216 <yxia216@bloomberg.net>
**Description** Update the compatibility matrix to specify EG v1.8.1+. Signed-off-by: Aaron Choo <achoo30@bloomberg.net> Signed-off-by: yxia216 <yxia216@bloomberg.net>
…ners (envoyproxy#2194) **Description** Azure is strict about `scheme` header to be same as the TLS transport on which the request is being made. If the listener is an http listener, envoy forwards a request with `scheme: http` instead of `https`. This leads to requests getting dropped. The simple solution is to use `matchUpstream` which is what is being done in MCP backend listeners but missed in regular AI gateway route listeners. **Related Issues/PRs (if applicable)** Fixes envoyproxy#2095 Signed-off-by: Anurag Aggarwal <kanurag94@gmail.com> Signed-off-by: yxia216 <yxia216@bloomberg.net>
…ackend HTTPRoute (envoyproxy#2134) **Description** When an `MCPRoute` has a `backendRef` with `securityPolicy.apiKey` configured (either via `secretRef` or `inline`), the controller resolves the secret and embeds the **plaintext API key** directly into the generated `HTTPRoute` resource. This happens in two places: 1. **Header injection** — the key is written as a literal value in an `HTTPRouteFilter` of type `RequestHeaderModifier` (e.g., `Authorization: Bearer <plaintext-token>`). 2. **Query parameter injection** — the key is appended to the URL path in a `URLRewrite` filter (e.g., `/mcp?api_key=<plaintext-token>`). fixes envoyproxy#2141 **Possible Solutions** 1. This can be solved for Header injection by using https://gateway.envoyproxy.io/docs/api/extension_types/#httpcredentialinjectionfilter. However, APIKey for `QueryParams` will still continue to be stored in plaintext. **Note: This PR implements this approach.** 2. By contrast, the existing `BackendSecurityPolicy` (used by `AIGatewayRoute` / `AIServiceBackend`) stores the resolved credential inside a Kubernetes **Secret** (the filter config secret consumed by extproc), which benefits from RBAC, encryption at rest, and audit logging. MCPRoute should adopt a similar approach. 3. Explore if we can add support for QueryParams in CredentialInjectionFilter in Envoy Gateway. **Affected code:** - internal/controller/mcp_route.go` **Testing** **Created MCPRoute with credential injection into Authorization header.** Credential got created and HTTPRouteFilter with Credential Injection filter got created. List tools and tool calls work as expected. Credential and filter got deleted on removing backend and deleting MCPRoute. **Created MCPRoute with credential injection into a custom header.** Credential got created and HTTPRouteFilter with Credential Injection filter got created. List tools and tool calls work as expected. Credential and filter got deleted on removing backend and deleting MCPRoute. **Created MCPRoute with inline API Key into Authorization header.** No change in behaviour. **Created MCPRoute with API Key injected into query param** No change in behaviour. --------- Signed-off-by: Aishwarya <aishwarya.raimule@nutanix.com> Signed-off-by: aishwaryaraimule21 <aishwarya.raimule@nutanix.com> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: yxia216 <yxia216@bloomberg.net>
…oyproxy#2200) Bumps the go group with 7 updates in the / directory: | Package | From | To | | --- | --- | --- | | [github.com/anthropics/anthropic-sdk-go](https://github.com/anthropics/anthropic-sdk-go) | `1.43.0` | `1.45.0` | | [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) | `1.32.17` | `1.32.18` | | [github.com/modelcontextprotocol/go-sdk](https://github.com/modelcontextprotocol/go-sdk) | `1.6.0` | `1.6.1` | | [github.com/openai/openai-go/v3](https://github.com/openai/openai-go) | `3.35.0` | `3.37.0` | | [github.com/tetratelabs/func-e](https://github.com/tetratelabs/func-e) | `1.5.0` | `1.6.0` | | [google.golang.org/api](https://github.com/googleapis/google-api-go-client) | `0.279.0` | `0.280.0` | | [google.golang.org/genai](https://github.com/googleapis/go-genai) | `1.57.0` | `1.58.0` | Updates `github.com/anthropics/anthropic-sdk-go` from 1.43.0 to 1.45.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/anthropics/anthropic-sdk-go/releases">github.com/anthropics/anthropic-sdk-go's releases</a>.</em></p> <blockquote> <h2>v1.45.0</h2> <h2>1.45.0 (2026-05-21)</h2> <p>Full Changelog: <a href="https://github.com/anthropics/anthropic-sdk-go/compare/v1.44.1...v1.45.0">v1.44.1...v1.45.0</a></p> <h3>Features</h3> <ul> <li><strong>api:</strong> Add support for thinking-token-count beta for estimated tokens in thinking block deltas when streaming (<a href="https://github.com/anthropics/anthropic-sdk-go/commit/dedeb6d263a651d63c95bd360befbd53dd26ec12">dedeb6d</a>)</li> </ul> <h2>v1.44.1</h2> <h2>1.44.1 (2026-05-19)</h2> <p>Full Changelog: <a href="https://github.com/anthropics/anthropic-sdk-go/compare/v1.44.0...v1.44.1">v1.44.0...v1.44.1</a></p> <h3>Bug Fixes</h3> <ul> <li><strong>runner:</strong> skip tool calls SessionToolRunner does not own (<a href="https://github.com/anthropics/anthropic-sdk-go/commit/93afc65f2f1b811d760f2e5149e13dd5eb328f79">93afc65</a>)</li> </ul> <h2>v1.44.0</h2> <h2>1.44.0 (2026-05-19)</h2> <p>Full Changelog: <a href="https://github.com/anthropics/anthropic-sdk-go/compare/v1.43.0...v1.44.0">v1.43.0...v1.44.0</a></p> <h3>Features</h3> <ul> <li><strong>client:</strong> Add support for self-hosted sandboxes in CMA with sandbox helpers (<a href="https://github.com/anthropics/anthropic-sdk-go/commit/34354c43f329852a88682bb6665a1453754d61be">34354c4</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/anthropics/anthropic-sdk-go/blob/main/CHANGELOG.md">github.com/anthropics/anthropic-sdk-go's changelog</a>.</em></p> <blockquote> <h2>1.45.0 (2026-05-21)</h2> <p>Full Changelog: <a href="https://github.com/anthropics/anthropic-sdk-go/compare/v1.44.1...v1.45.0">v1.44.1...v1.45.0</a></p> <h3>Features</h3> <ul> <li><strong>api:</strong> Add support for thinking-token-count beta for estimated tokens in thinking block deltas when streaming (<a href="https://github.com/anthropics/anthropic-sdk-go/commit/dedeb6d263a651d63c95bd360befbd53dd26ec12">dedeb6d</a>)</li> </ul> <h2>1.44.1 (2026-05-19)</h2> <p>Full Changelog: <a href="https://github.com/anthropics/anthropic-sdk-go/compare/v1.44.0...v1.44.1">v1.44.0...v1.44.1</a></p> <h3>Bug Fixes</h3> <ul> <li><strong>runner:</strong> skip tool calls SessionToolRunner does not own (<a href="https://github.com/anthropics/anthropic-sdk-go/commit/93afc65f2f1b811d760f2e5149e13dd5eb328f79">93afc65</a>)</li> </ul> <h2>1.44.0 (2026-05-19)</h2> <p>Full Changelog: <a href="https://github.com/anthropics/anthropic-sdk-go/compare/v1.43.0...v1.44.0">v1.43.0...v1.44.0</a></p> <h3>Features</h3> <ul> <li><strong>client:</strong> Add support for self-hosted sandboxes in CMA with sandbox helpers (<a href="https://github.com/anthropics/anthropic-sdk-go/commit/34354c43f329852a88682bb6665a1453754d61be">34354c4</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/anthropics/anthropic-sdk-go/commit/88310ccdb19419fb6c8b0fd2e99f1e3d8c74041e"><code>88310cc</code></a> release: 1.45.0</li> <li><a href="https://github.com/anthropics/anthropic-sdk-go/commit/4eb28e321282db071753c97d3223b092db9108d1"><code>4eb28e3</code></a> feat(api): Add support for thinking-token-count beta for estimated tokens in ...</li> <li><a href="https://github.com/anthropics/anthropic-sdk-go/commit/d138190aeae5568972430f9a6204875aa04097fc"><code>d138190</code></a> release: 1.44.1</li> <li><a href="https://github.com/anthropics/anthropic-sdk-go/commit/d0a73a50e70544b552f202d4e6f67eb45b9fd739"><code>d0a73a5</code></a> fix(runner): skip tool calls SessionToolRunner does not own</li> <li><a href="https://github.com/anthropics/anthropic-sdk-go/commit/288857308b47e48ee7d572506efffb568d514846"><code>2888573</code></a> release: 1.44.0 (<a href="https://redirect.github.com/anthropics/anthropic-sdk-go/issues/340">#340</a>)</li> <li>See full diff in <a href="https://github.com/anthropics/anthropic-sdk-go/compare/v1.43.0...v1.45.0">compare view</a></li> </ul> </details> <br /> Updates `github.com/aws/aws-sdk-go-v2/config` from 1.32.17 to 1.32.18 <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/aws/aws-sdk-go-v2/commit/db9f4e546dfe2f62a6bc3bf54b9da42ebace6372"><code>db9f4e5</code></a> Release 2026-05-22</li> <li><a href="https://github.com/aws/aws-sdk-go-v2/commit/34e7ddc9400e830a9ae226a7e3c2161e5ece4f19"><code>34e7ddc</code></a> Regenerated Clients</li> <li><a href="https://github.com/aws/aws-sdk-go-v2/commit/f9db036cf7b3b8a1ea5eb67c3d296da4b48b6e2b"><code>f9db036</code></a> Update endpoints model</li> <li><a href="https://github.com/aws/aws-sdk-go-v2/commit/ae5eae1e3ec46433bd99496bfa6936f8f09a2e72"><code>ae5eae1</code></a> Update API model</li> <li><a href="https://github.com/aws/aws-sdk-go-v2/commit/429dbdd2a35d325aabc5757edfc9ebf09c2ad12e"><code>429dbdd</code></a> Feat discover endpoint partition validation (<a href="https://redirect.github.com/aws/aws-sdk-go-v2/issues/3410">#3410</a>)</li> <li><a href="https://github.com/aws/aws-sdk-go-v2/commit/ab4f5b60785064ec6346c922604d94b63d9c7299"><code>ab4f5b6</code></a> Release 2026-05-21</li> <li><a href="https://github.com/aws/aws-sdk-go-v2/commit/757a09909a97a15e5a481d9839b83f15b8fdc4bc"><code>757a099</code></a> Regenerated Clients</li> <li><a href="https://github.com/aws/aws-sdk-go-v2/commit/02c8323ee6c99be82dae3a3923616756cb164525"><code>02c8323</code></a> Update API model</li> <li><a href="https://github.com/aws/aws-sdk-go-v2/commit/f4ac954c5b3567f7918fbaa845bd05a8b211f54e"><code>f4ac954</code></a> Bump smithy-go version and update imports for evenstream protocoltests (<a href="https://redirect.github.com/aws/aws-sdk-go-v2/issues/3420">#3420</a>)</li> <li><a href="https://github.com/aws/aws-sdk-go-v2/commit/6d937001e020def8b587dccbe5d803933ce57bfd"><code>6d93700</code></a> Add replace for credentials dependency added on go.mod (<a href="https://redirect.github.com/aws/aws-sdk-go-v2/issues/3419">#3419</a>)</li> <li>Additional commits viewable in <a href="https://github.com/aws/aws-sdk-go-v2/compare/config/v1.32.17...config/v1.32.18">compare view</a></li> </ul> </details> <br /> Updates `github.com/modelcontextprotocol/go-sdk` from 1.6.0 to 1.6.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/modelcontextprotocol/go-sdk/releases">github.com/modelcontextprotocol/go-sdk's releases</a>.</em></p> <blockquote> <h2>v1.6.1</h2> <p>This release adds an MCPGODEBUG flag to opt out of the Content-Type check on POST requests.</p> <h2>Behavior Changes</h2> <p>Prior to v1.6.0 (v1.4.0...v1.5.0), the Content-Type check on POST requests was gated by the same <code>disablecrossoriginprotection</code> MCPGODEBUG flag as the cross-origin protection. In v1.6.0, the cross-origin protection was disabled by default (replaced by the opt-in <code>enableoriginverification</code> flag), but the Content-Type check was kept on unconditionally, leaving no way to disable it. This release restores an escape hatch for both the Streamable HTTP and SSE transports: setting <code>MCPGODEBUG=disablecontenttypecheck=1</code> skips the <code>Content-Type: application/json</code> validation on POST requests. See <a href="https://redirect.github.com/modelcontextprotocol/go-sdk/issues/957">#957</a>.</p> <h2>What's Changed</h2> <ul> <li>mcp: add MCPGPDEBUG for opt-in Content-Type check by <a href="https://github.com/guglielmo-san"><code>@guglielmo-san</code></a> in <a href="https://redirect.github.com/modelcontextprotocol/go-sdk/pull/972">modelcontextprotocol/go-sdk#972</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/modelcontextprotocol/go-sdk/compare/v1.6.0...v1.6.1">https://github.com/modelcontextprotocol/go-sdk/compare/v1.6.0...v1.6.1</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/modelcontextprotocol/go-sdk/commit/d454bbaf06a342aee5336df3370321d9cdec2478"><code>d454bba</code></a> mcp: add MCPGPDEBUG for opt-in Content-Type check (<a href="https://redirect.github.com/modelcontextprotocol/go-sdk/issues/972">#972</a>)</li> <li>See full diff in <a href="https://github.com/modelcontextprotocol/go-sdk/compare/v1.6.0...v1.6.1">compare view</a></li> </ul> </details> <br /> Updates `github.com/openai/openai-go/v3` from 3.35.0 to 3.37.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/openai/openai-go/releases">github.com/openai/openai-go/v3's releases</a>.</em></p> <blockquote> <h2>v3.37.0</h2> <h2>3.37.0 (2026-05-21)</h2> <p>Full Changelog: <a href="https://github.com/openai/openai-go/compare/v3.36.0...v3.37.0">v3.36.0...v3.37.0</a></p> <h3>Features</h3> <ul> <li><strong>api:</strong> api update (<a href="https://github.com/openai/openai-go/commit/7f7416ea4f6953a2861189dee6391515c3b995a9">7f7416e</a>)</li> <li><strong>api:</strong> manual updates (<a href="https://github.com/openai/openai-go/commit/d6465620413df87d971e7e37ae74bef4c70076b1">d646562</a>)</li> <li><strong>api:</strong> update OpenAPI spec or Stainless config (<a href="https://github.com/openai/openai-go/commit/b34b78a83433003a6168fffd175cc963ad719495">b34b78a</a>)</li> <li><strong>client:</strong> optimize json encoder for internal types (<a href="https://github.com/openai/openai-go/commit/93adc6e6247e8ce830152c3df0980a3154aa098a">93adc6e</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><strong>go:</strong> format generated admin paths (<a href="https://github.com/openai/openai-go/commit/1dd8f5ec0adeeefef6a56068b5532ba5e3b3290e">1dd8f5e</a>)</li> <li><strong>go:</strong> format generated project permission paths (<a href="https://github.com/openai/openai-go/commit/b751c37ce2d6348545d75451dfc253dd7dda0f4f">b751c37</a>)</li> </ul> <h3>Chores</h3> <ul> <li><strong>api:</strong> docs updates (<a href="https://github.com/openai/openai-go/commit/08bc80ea58a19ba0725942c1f3afbcfb043851a0">08bc80e</a>)</li> </ul> <h2>v3.36.0</h2> <h2>3.36.0 (2026-05-13)</h2> <p>Full Changelog: <a href="https://github.com/openai/openai-go/compare/v3.35.0...v3.36.0">v3.35.0...v3.36.0</a></p> <h3>Features</h3> <ul> <li><strong>api:</strong> add service_tier parameter to response compact method (<a href="https://github.com/openai/openai-go/commit/bacd2c0bcf980e8d424d67446fb4d9c4ea897d24">bacd2c0</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><strong>go:</strong> avoid panic when http.DefaultTransport is wrapped (<a href="https://github.com/openai/openai-go/commit/95a0250a9c770674f8deacb3a3fc1175e6808967">95a0250</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/openai/openai-go/blob/main/CHANGELOG.md">github.com/openai/openai-go/v3's changelog</a>.</em></p> <blockquote> <h2>3.37.0 (2026-05-21)</h2> <p>Full Changelog: <a href="https://github.com/openai/openai-go/compare/v3.36.0...v3.37.0">v3.36.0...v3.37.0</a></p> <h3>Features</h3> <ul> <li><strong>api:</strong> api update (<a href="https://github.com/openai/openai-go/commit/7f7416ea4f6953a2861189dee6391515c3b995a9">7f7416e</a>)</li> <li><strong>api:</strong> manual updates (<a href="https://github.com/openai/openai-go/commit/d6465620413df87d971e7e37ae74bef4c70076b1">d646562</a>)</li> <li><strong>api:</strong> update OpenAPI spec or Stainless config (<a href="https://github.com/openai/openai-go/commit/b34b78a83433003a6168fffd175cc963ad719495">b34b78a</a>)</li> <li><strong>client:</strong> optimize json encoder for internal types (<a href="https://github.com/openai/openai-go/commit/93adc6e6247e8ce830152c3df0980a3154aa098a">93adc6e</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><strong>go:</strong> format generated admin paths (<a href="https://github.com/openai/openai-go/commit/1dd8f5ec0adeeefef6a56068b5532ba5e3b3290e">1dd8f5e</a>)</li> <li><strong>go:</strong> format generated project permission paths (<a href="https://github.com/openai/openai-go/commit/b751c37ce2d6348545d75451dfc253dd7dda0f4f">b751c37</a>)</li> </ul> <h3>Chores</h3> <ul> <li><strong>api:</strong> docs updates (<a href="https://github.com/openai/openai-go/commit/08bc80ea58a19ba0725942c1f3afbcfb043851a0">08bc80e</a>)</li> </ul> <h2>3.36.0 (2026-05-13)</h2> <p>Full Changelog: <a href="https://github.com/openai/openai-go/compare/v3.35.0...v3.36.0">v3.35.0...v3.36.0</a></p> <h3>Features</h3> <ul> <li><strong>api:</strong> add service_tier parameter to response compact method (<a href="https://github.com/openai/openai-go/commit/bacd2c0bcf980e8d424d67446fb4d9c4ea897d24">bacd2c0</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><strong>go:</strong> avoid panic when http.DefaultTransport is wrapped (<a href="https://github.com/openai/openai-go/commit/95a0250a9c770674f8deacb3a3fc1175e6808967">95a0250</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/openai/openai-go/commit/8f01a93893a51fc300850dc311aa66c96467f47b"><code>8f01a93</code></a> Merge pull request <a href="https://redirect.github.com/openai/openai-go/issues/676">#676</a> from openai/release-please--branches--main--changes--...</li> <li><a href="https://github.com/openai/openai-go/commit/2db0d86948259932a76fe8df25a3a513c132f242"><code>2db0d86</code></a> release: 3.37.0</li> <li><a href="https://github.com/openai/openai-go/commit/ea245d8115372e980d442072c79436f991366348"><code>ea245d8</code></a> Merge pull request <a href="https://redirect.github.com/openai/openai-go/issues/991">#991</a> from stainless-sdks/dev/xuanqi/public-api-docs-enterp...</li> <li><a href="https://github.com/openai/openai-go/commit/1dd8f5ec0adeeefef6a56068b5532ba5e3b3290e"><code>1dd8f5e</code></a> fix(go): format generated admin paths</li> <li><a href="https://github.com/openai/openai-go/commit/7f7416ea4f6953a2861189dee6391515c3b995a9"><code>7f7416e</code></a> feat(api): api update</li> <li><a href="https://github.com/openai/openai-go/commit/b751c37ce2d6348545d75451dfc253dd7dda0f4f"><code>b751c37</code></a> fix(go): format generated project permission paths</li> <li><a href="https://github.com/openai/openai-go/commit/08bc80ea58a19ba0725942c1f3afbcfb043851a0"><code>08bc80e</code></a> chore(api): docs updates</li> <li><a href="https://github.com/openai/openai-go/commit/d6465620413df87d971e7e37ae74bef4c70076b1"><code>d646562</code></a> feat(api): manual updates</li> <li><a href="https://github.com/openai/openai-go/commit/b34b78a83433003a6168fffd175cc963ad719495"><code>b34b78a</code></a> feat(api): update OpenAPI spec or Stainless config</li> <li><a href="https://github.com/openai/openai-go/commit/efa3cc0d27ca02c86ecea59f34a7b731fdc1708f"><code>efa3cc0</code></a> codegen metadata</li> <li>Additional commits viewable in <a href="https://github.com/openai/openai-go/compare/v3.35.0...v3.37.0">compare view</a></li> </ul> </details> <br /> Updates `github.com/tetratelabs/func-e` from 1.5.0 to 1.6.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/tetratelabs/func-e/releases">github.com/tetratelabs/func-e's releases</a>.</em></p> <blockquote> <h2>v1.6.0</h2> <p>func-e 1.6.0 gives you yesterday's envoy main build via the "dev" version</p> <p>Before, testing pre-release Envoy with func-e meant compiling it yourself or using Docker, which only worked on Linux. Now you can install and run dev builds on all platforms the same way you would any tagged version.</p> <pre lang="bash"><code>$ ENVOY_VERSION=dev func-e run --version downloading https://archive.tetratelabs.io/envoy/download/dev/envoy-dev-darwin-arm64.tar.xz starting: /Users/codefromthecrypt/.local/share/func-e/envoy-versions/dev/bin/envoy with logs in /Users/codefromthecrypt/.local/state/func-e/envoy-runs/20260518_170024_807 <p>/Users/codefromthecrypt/.local/share/func-e/envoy-versions/dev/bin/envoy version: abbadd905fa486ff1085cf3bbe4f3b73eb6dd8e0/1.39.0-dev/Clean/RELEASE/BoringSSL</p> <p>$ func-e versions -a<br /> dev 2026-05-18 (a8d396eb)<br /> 1.38.0 2026-04-23<br /> 1.37.2 2026-04-10<br /> -- snip--<br /> </code></pre></p> <p>This works because envoy's version manifest was recently updated with a special "dev" key backed by a <a href="https://redirect.github.com/tetratelabs/archive-envoy/pull/70">daily pipeline job</a>, which archives linux from envoy's docker image, and builds macos from the same SHA.</p> <h2>Updating the "dev" build with the "dev-latest" alias.</h2> <p><code>dev</code> installs on demand like all other versions and stays put once pulled. The alias <code>dev-latest</code> compares the remote release date against the local install and re-downloads only when the build has changed. <code>func-e use dev-latest</code> persists "dev" in the version file, so it is a one-shot refresh, not a stored preference.</p> <h2>Why Use An Envoy "dev" Build?</h2> <p>Envoy releases are worth the wait, but they land about once a quarter. The dev build is for the gap between “merged” and “released”: you can try current Envoy mainline without building Envoy yourself or relying on a Linux-only Docker workflow.</p> <p>For example, Envoy 1.39-dev already has new dynamic-module support for request-aware upstream selection. A dynamic module can parse a request, write <code>selected_backend</code> or <code>selected_endpoint</code> into request state, and have the cluster read it while choosing the upstream host. That removes the need to pass routing decisions through synthetic headers or route re-selection.</p> <p>Use dev when you need to test an unreleased feature, validate upgrade impact early, or give feedback before the next Envoy release is cut. Use tagged versions for normal production runs.</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/tetratelabs/func-e/commit/33bfb64ba4176a8d970a21f9a7516b73c9065266"><code>33bfb64</code></a> Removes last of windows remnants (<a href="https://redirect.github.com/tetratelabs/func-e/issues/515">#515</a>)</li> <li><a href="https://github.com/tetratelabs/func-e/commit/3d2f9e8b33c4e279ff523f4f73d4abd6d8b2c5b3"><code>3d2f9e8</code></a> Automates PR to update last known Envoy version (<a href="https://redirect.github.com/tetratelabs/func-e/issues/514">#514</a>)</li> <li><a href="https://github.com/tetratelabs/func-e/commit/d785fc8c942815230d3c9c9058a1c0de74a9bb91"><code>d785fc8</code></a> Reverts to Tools.mk for go run instead of go tool (<a href="https://redirect.github.com/tetratelabs/func-e/issues/513">#513</a>)</li> <li><a href="https://github.com/tetratelabs/func-e/commit/99644b8672c6ed54fef2a5afe20b05472e27750f"><code>99644b8</code></a> Removes nfpm env workaround (<a href="https://redirect.github.com/tetratelabs/func-e/issues/512">#512</a>)</li> <li><a href="https://github.com/tetratelabs/func-e/commit/1791ba3ad4bf9999a994230d8a1e7bcdc49143d7"><code>1791ba3</code></a> Fix install.sh to follow curl-sh norms (<a href="https://redirect.github.com/tetratelabs/func-e/issues/511">#511</a>)</li> <li><a href="https://github.com/tetratelabs/func-e/commit/7f8616455617411cd217fbb78aeb3268814fd1ae"><code>7f86164</code></a> Fix races and -race by default (<a href="https://redirect.github.com/tetratelabs/func-e/issues/510">#510</a>)</li> <li><a href="https://github.com/tetratelabs/func-e/commit/04fe1e25b51cdff3e025548a63626cde0c996415"><code>04fe1e2</code></a> Use yesterday's envoy main build via the "dev" version (<a href="https://redirect.github.com/tetratelabs/func-e/issues/509">#509</a>)</li> <li><a href="https://github.com/tetratelabs/func-e/commit/a0c7a071675c5502a481b72bc9b32fea934c8311"><code>a0c7a07</code></a> Backfills rationale for internal httptest package (<a href="https://redirect.github.com/tetratelabs/func-e/issues/508">#508</a>)</li> <li><a href="https://github.com/tetratelabs/func-e/commit/91e310e948417655a9c2548744b70f3285984555"><code>91e310e</code></a> Installs go so that release e2e can run (<a href="https://redirect.github.com/tetratelabs/func-e/issues/507">#507</a>)</li> <li>See full diff in <a href="https://github.com/tetratelabs/func-e/compare/v1.5.0...v1.6.0">compare view</a></li> </ul> </details> <br /> Updates `google.golang.org/api` from 0.279.0 to 0.280.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/googleapis/google-api-go-client/releases">google.golang.org/api's releases</a>.</em></p> <blockquote> <h2>v0.280.0</h2> <h2><a href="https://github.com/googleapis/google-api-go-client/compare/v0.279.0...v0.280.0">0.280.0</a> (2026-05-19)</h2> <h3>Features</h3> <ul> <li><strong>all:</strong> Auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3591">#3591</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/55ba2fab69ee14286ad052f57ed90a726b071e86">55ba2fa</a>)</li> <li><strong>all:</strong> Auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3593">#3593</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/054d4b6054450d2be21f50fad64145a4e0125424">054d4b6</a>)</li> <li><strong>all:</strong> Auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3594">#3594</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/03829161b8cd77bf11f4a3a5d07a43f6b1904fbe">0382916</a>)</li> <li><strong>all:</strong> Auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3595">#3595</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/13e1ad2eeb540d19709df87ce9a0cfdb632f1bf3">13e1ad2</a>)</li> <li><strong>all:</strong> Auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3596">#3596</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/4c77865748dda2086de226e9401531c934cd909f">4c77865</a>)</li> <li><strong>all:</strong> Auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3598">#3598</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/ae2f33001826f523ecc6d2f141244e55fbac45c0">ae2f330</a>)</li> <li><strong>all:</strong> Auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3599">#3599</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/f82d2049187ed2ab7ee27831a1a78887c5969ca4">f82d204</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md">google.golang.org/api's changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/googleapis/google-api-go-client/compare/v0.279.0...v0.280.0">0.280.0</a> (2026-05-19)</h2> <h3>Features</h3> <ul> <li><strong>all:</strong> Auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3591">#3591</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/55ba2fab69ee14286ad052f57ed90a726b071e86">55ba2fa</a>)</li> <li><strong>all:</strong> Auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3593">#3593</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/054d4b6054450d2be21f50fad64145a4e0125424">054d4b6</a>)</li> <li><strong>all:</strong> Auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3594">#3594</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/03829161b8cd77bf11f4a3a5d07a43f6b1904fbe">0382916</a>)</li> <li><strong>all:</strong> Auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3595">#3595</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/13e1ad2eeb540d19709df87ce9a0cfdb632f1bf3">13e1ad2</a>)</li> <li><strong>all:</strong> Auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3596">#3596</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/4c77865748dda2086de226e9401531c934cd909f">4c77865</a>)</li> <li><strong>all:</strong> Auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3598">#3598</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/ae2f33001826f523ecc6d2f141244e55fbac45c0">ae2f330</a>)</li> <li><strong>all:</strong> Auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3599">#3599</a>) (<a href="https://github.com/googleapis/google-api-go-client/commit/f82d2049187ed2ab7ee27831a1a78887c5969ca4">f82d204</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/googleapis/google-api-go-client/commit/3887b09ecbbaf25fba1bf52227ad5ca4f89e9968"><code>3887b09</code></a> chore(main): release 0.280.0 (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3592">#3592</a>)</li> <li><a href="https://github.com/googleapis/google-api-go-client/commit/f82d2049187ed2ab7ee27831a1a78887c5969ca4"><code>f82d204</code></a> feat(all): auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3599">#3599</a>)</li> <li><a href="https://github.com/googleapis/google-api-go-client/commit/13e7314e1377c0dd4e132a681b3130abc5843dbd"><code>13e7314</code></a> chore(all): update all (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3597">#3597</a>)</li> <li><a href="https://github.com/googleapis/google-api-go-client/commit/ae2f33001826f523ecc6d2f141244e55fbac45c0"><code>ae2f330</code></a> feat(all): auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3598">#3598</a>)</li> <li><a href="https://github.com/googleapis/google-api-go-client/commit/4c77865748dda2086de226e9401531c934cd909f"><code>4c77865</code></a> feat(all): auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3596">#3596</a>)</li> <li><a href="https://github.com/googleapis/google-api-go-client/commit/13e1ad2eeb540d19709df87ce9a0cfdb632f1bf3"><code>13e1ad2</code></a> feat(all): auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3595">#3595</a>)</li> <li><a href="https://github.com/googleapis/google-api-go-client/commit/03829161b8cd77bf11f4a3a5d07a43f6b1904fbe"><code>0382916</code></a> feat(all): auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3594">#3594</a>)</li> <li><a href="https://github.com/googleapis/google-api-go-client/commit/054d4b6054450d2be21f50fad64145a4e0125424"><code>054d4b6</code></a> feat(all): auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3593">#3593</a>)</li> <li><a href="https://github.com/googleapis/google-api-go-client/commit/55ba2fab69ee14286ad052f57ed90a726b071e86"><code>55ba2fa</code></a> feat(all): auto-regenerate discovery clients (<a href="https://redirect.github.com/googleapis/google-api-go-client/issues/3591">#3591</a>)</li> <li>See full diff in <a href="https://github.com/googleapis/google-api-go-client/compare/v0.279.0...v0.280.0">compare view</a></li> </ul> </details> <br /> Updates `google.golang.org/genai` from 1.57.0 to 1.58.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/googleapis/go-genai/releases">google.golang.org/genai's releases</a>.</em></p> <blockquote> <h2>v1.58.0</h2> <h2><a href="https://github.com/googleapis/go-genai/compare/v1.57.0...v1.58.0">1.58.0</a> (2026-05-21)</h2> <h3>Features</h3> <ul> <li>add <code>enable_prompt_injection_detection</code> for Computer Use feature for the Gemini API. (<a href="https://github.com/googleapis/go-genai/commit/19c2566dcfdbfdbc5821ab8ffb71f6155f084dab">19c2566</a>)</li> <li>add new fields (<a href="https://github.com/googleapis/go-genai/commit/1608e807c1aa9d80dfc484db6cc37f49ee4e69a1">1608e80</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/googleapis/go-genai/blob/main/CHANGELOG.md">google.golang.org/genai's changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/googleapis/go-genai/compare/v1.57.0...v1.58.0">1.58.0</a> (2026-05-21)</h2> <h3>Features</h3> <ul> <li>add <code>enable_prompt_injection_detection</code> for Computer Use feature for the Gemini API. (<a href="https://github.com/googleapis/go-genai/commit/19c2566dcfdbfdbc5821ab8ffb71f6155f084dab">19c2566</a>)</li> <li>add new fields (<a href="https://github.com/googleapis/go-genai/commit/1608e807c1aa9d80dfc484db6cc37f49ee4e69a1">1608e80</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/googleapis/go-genai/commit/97ea31f16473973e587f5b18659a5669dffd1f84"><code>97ea31f</code></a> chore(main): release 1.58.0 (<a href="https://redirect.github.com/googleapis/go-genai/issues/793">#793</a>)</li> <li><a href="https://github.com/googleapis/go-genai/commit/19c2566dcfdbfdbc5821ab8ffb71f6155f084dab"><code>19c2566</code></a> feat: add <code>enable_prompt_injection_detection</code> for Computer Use feature for th...</li> <li><a href="https://github.com/googleapis/go-genai/commit/1608e807c1aa9d80dfc484db6cc37f49ee4e69a1"><code>1608e80</code></a> feat: add new fields</li> <li><a href="https://github.com/googleapis/go-genai/commit/843a665755f75055e7c4bde1177af703384f7905"><code>843a665</code></a> chore: update comment in BatchJobOutputInfo to unblock javadoc generation</li> <li><a href="https://github.com/googleapis/go-genai/commit/8b28bf81bd7a3cee47ed0a8b911e0d574f87a7aa"><code>8b28bf8</code></a> chore: Throw fatals() instead of errors() in the replay_api_client when the i...</li> <li>See full diff in <a href="https://github.com/googleapis/go-genai/compare/v1.57.0...v1.58.0">compare view</a></li> </ul> </details> <br /> Updates `google.golang.org/genproto/googleapis/rpc` from 0.0.0-20260427160629-7cedc36a6bc4 to 0.0.0-20260511170946-3700d4141b60 <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/googleapis/go-genproto/commits">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ignasi Barrera <ignasi@tetrate.io> Signed-off-by: yxia216 <yxia216@bloomberg.net>
**Description**
When an MCPRoute/AIGW ROute references a non-existent Gateway in its
spec.parentRefs, the controller still marks the route as "Accepted" with
the message "Gateway Route reconciled successfully". The controller logs
"Gateway not found" but does not propagate this as an error, so the
reconciliation appears successful.
Root Cause:
In internal/controller/mcp_route.go, the syncGateway function was a void
function that silently returned on errors — it logged "Gateway not
found" but never returned an error to the caller. Since syncGateways
(which calls syncGateway for each parentRef) always returned nil, the
syncMCPRoute function completed successfully, and Reconcile marked the
status as ConditionTypeAccepted.
- and same goes for ai gateway route controller
Fix:
Changed syncGateway to return an error. When the referenced Gateway is
not found, it now returns a descriptive error ("gateway
<namespace>/<name> not found"). This error propagates through
syncGateways → syncRoute → Reconcile, which then calls updateRouteStatus
with ConditionTypeNotAccepted and the error message.
During Route deletion (via the finalizer path), the error is still
logged but does not block cleanup — handleFinalizer already handles
onDeletionFn errors non-fatally.
---------
Signed-off-by: Hritik003 <hritik.raj@nutanix.com>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
… in Bedrock translator (envoyproxy#2189) **Description** In the Anthropic-to-AWS-Bedrock translator, Claude Code with mid-conversation-system beta sends system prompts as {"role": "system"} in the messages array. The SDK has no system role constant so these hit the default error case. This promotes them to the top-level system param before conversion. Fixes envoyproxy#2206 Signed-off-by: Linus Schlumberger <linus.schlumberger@siemens.com> Co-authored-by: Ignasi Barrera <ignasi@tetrate.io> Signed-off-by: yxia216 <yxia216@bloomberg.net>
…ror translation (envoyproxy#2161) **Description** Anthropic→OpenAI error translation could fail with an internal 500 when an OpenAI-compatible upstream returned a structured JSON error where `error.code` was numeric (e.g. `400`) instead of string. This change makes the error model tolerant to both representations so upstream 4xx diagnostics can still be translated and surfaced to Anthropic clients. - **Schema decoding hardening (`internal/apischema/openai/openai.go`)** - Added `UnmarshalJSON` for `openai.ErrorType`. - `error.code` now accepts: - JSON string (`"code":"400"`) - JSON number (`"code":400`) - `null` / omitted - Numeric values are normalized to the existing internal `*string` field. - **Translator regression coverage (`internal/translator/anthropic_openai_test.go`)** - Extended `TestAnthropicToOpenAITranslator_ResponseError` with a JSON error fixture containing numeric `code`. - Confirms response still maps to Anthropic error envelope with expected `type` and `message`. ```json { "type": "error", "error": { "type": "invalid_request_error", "message": "Bad request", "param": null, "code": 400 } } ``` **Related Issues/PRs (if applicable)** Fixes envoyproxy#2151 **Special notes for reviewers (if applicable)** N/A --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Ignasi Barrera <ignasi@tetrate.io> Signed-off-by: yxia216 <yxia216@bloomberg.net>
**Description** Fix the vars for the 0.7 and main releases. **Related Issues/PRs (if applicable)** N/A **Special notes for reviewers (if applicable)** N/A Signed-off-by: Ignasi Barrera <nacx@apache.org> Signed-off-by: yxia216 <yxia216@bloomberg.net>
…2199) **Description** Anthropic recently exposed the reasoning tokens via `output_tokens_details`: https://platform.claude.com/docs/en/api/python/messages/create. Thus we should also added this usage information for our users. --------- Signed-off-by: yxia216 <yxia216@bloomberg.net> Co-authored-by: Ignasi Barrera <ignasi@tetrate.io> Signed-off-by: yxia216 <yxia216@bloomberg.net>
…voyproxy#2220) Bumps the go group with 3 updates in the / directory: [go.opentelemetry.io/contrib/exporters/autoexport](https://github.com/open-telemetry/opentelemetry-go-contrib), [go.opentelemetry.io/contrib/propagators/autoprop](https://github.com/open-telemetry/opentelemetry-go-contrib) and [google.golang.org/api](https://github.com/googleapis/google-api-go-client). Updates `go.opentelemetry.io/contrib/exporters/autoexport` from 0.68.0 to 0.69.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-go-contrib/releases">go.opentelemetry.io/contrib/exporters/autoexport's releases</a>.</em></p> <blockquote> <h2>v1.44.0/v2.5.1/v0.69.0/v0.37.1/v0.24.0/v0.19.0/v0.16.1/v0.16.0</h2> <h3>Added</h3> <ul> <li>Add <code>error.type</code> attribute to <code>http.client.request.duration</code> for transport failures in <code>otelhttp</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8801">#8801</a>)</li> <li>Add examples for prometheus compatibility document. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8716">#8716</a>)</li> <li>Add support for <code>cardinality_limits</code> in <code>PeriodicMetricReader</code> in <code>otelconf</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8885">#8885</a>)</li> <li>Add <code>Resource</code> method to <code>SDK</code> in <code>go.opentelemetry.io/contrib/otelconf/x</code> to expose the resolved SDK resource from declarative configuration. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8913">#8913</a>)</li> <li>Add <code>go.opentelemetry.io/contrib/detectors/hetzner</code>, a new resource detector for Hetzner Cloud servers, ported from <code>github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor/internal/hetzner</code>. Detects <code>cloud.provider</code>, <code>cloud.platform</code>, <code>cloud.region</code>, <code>cloud.availability_zone</code>, <code>host.id</code>, and <code>host.name</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8979">#8979</a>)</li> </ul> <h3>Changed</h3> <ul> <li>Set error field as <code>record.SetErr</code> instead of a plain attribute in <code>go.opentelemetry.io/contrib/bridges/otellogrus</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8776">#8776</a>)</li> <li>Set the "error" field (e.g. created via <code>zap.Error</code>) as <code>record.SetErr</code> instead of a plain attribute in <code>go.opentelemetry.io/contrib/bridges/otelzap</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8719">#8719</a>)</li> <li>Set fields implementing <code>error</code> interface from <code>slog</code> records as <code>record.SetErr</code> instead of plain attributes in <code>go.opentelemetry.io/contrib/bridges/otelslog</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8774">#8774</a>)</li> <li>Set emitted errors in <code>go.opentelemetry.io/contrib/bridges/otellogr</code> as record errors (<code>Record.SetErr</code>) instead of <code>exception.message</code> attributes. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8775">#8775</a>)</li> </ul> <h3>Fixed</h3> <ul> <li>Fix header attributes lost when using sub-spans in <code>go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8797">#8797</a>)</li> <li>Validate <code>encoding</code> configuration for OTLP HTTP exporters in <code>go.opentelemetry.io/contrib/otelconf</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8772">#8772</a>)</li> <li>Remove the custom body wrapper from the request's body after the request is processed to allow body type comparisons with the original type in <code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code> and <code>go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/6914">#6914</a>)</li> <li>Unknown or empty HTTP methods now report "_OTHER" instead of "GET" across all HTTP instrumentations to align with OpenTelemetry semantic conventions. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8868">#8868</a>)</li> <li>The default span name formatter in <code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code> now conforms to the OpenTelemetry HTTP semantic conventions for server span names. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8871">#8871</a>) <ul> <li>The default span name is now <code>{method} {route}</code> (e.g. <code>GET /foo/{id}</code>) when a route pattern is available, or <code>{method}</code> (e.g. <code>GET</code>) otherwise.</li> </ul> </li> </ul> <h3>Removed</h3> <ul> <li>Remove the deprecated <code>WithSpanOptions</code> option in <code>go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8991">#8991</a>)</li> </ul> <h2>What's Changed</h2> <ul> <li>otelconf: validate encoding configuration for OTLP HTTP exporters by <a href="https://github.com/sonalgaud12"><code>@sonalgaud12</code></a> in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8772">open-telemetry/opentelemetry-go-contrib#8772</a></li> <li>fix(deps): update module github.com/aws/aws-sdk-go-v2/service/s3 to v1.99.0 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8780">open-telemetry/opentelemetry-go-contrib#8780</a></li> <li>chore(deps): update prom/prometheus docker tag to v3.11.1 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8779">open-telemetry/opentelemetry-go-contrib#8779</a></li> <li>otellogrus: Set error field as <code>record.SetErr</code> by <a href="https://github.com/sonalgaud12"><code>@sonalgaud12</code></a> in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8778">open-telemetry/opentelemetry-go-contrib#8778</a></li> <li>chore(deps): update module golang.org/x/sys to v0.43.0 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8783">open-telemetry/opentelemetry-go-contrib#8783</a></li> <li>chore(deps): update golang.org/x/telemetry digest to 93c7c8a by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8786">open-telemetry/opentelemetry-go-contrib#8786</a></li> <li>chore(deps): update module github.com/mattn/go-isatty to v0.0.21 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8787">open-telemetry/opentelemetry-go-contrib#8787</a></li> <li>chore(deps): update module github.com/mattn/go-runewidth to v0.0.23 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8788">open-telemetry/opentelemetry-go-contrib#8788</a></li> <li>chore(deps): update golang.org/x by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8791">open-telemetry/opentelemetry-go-contrib#8791</a></li> <li>chore(deps): update actions/github-script action to v9 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8795">open-telemetry/opentelemetry-go-contrib#8795</a></li> <li>fix(deps): update golang.org/x by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8794">open-telemetry/opentelemetry-go-contrib#8794</a></li> <li>otelzap: set error field as record.SetErr by <a href="https://github.com/iblancasa"><code>@iblancasa</code></a> in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8719">open-telemetry/opentelemetry-go-contrib#8719</a></li> <li>fix(deps): update golang.org/x to 746e56f by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8796">open-telemetry/opentelemetry-go-contrib#8796</a></li> <li>chore(deps): update module golang.org/x/arch to v0.26.0 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8798">open-telemetry/opentelemetry-go-contrib#8798</a></li> <li>Check if otelgrpc metrics are enabled by <a href="https://github.com/dashpole"><code>@dashpole</code></a> in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8792">open-telemetry/opentelemetry-go-contrib#8792</a></li> <li>chore(deps): update actions/upload-artifact action to v7.0.1 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8800">open-telemetry/opentelemetry-go-contrib#8800</a></li> <li>Check instrument enabled in deprecatedruntime by <a href="https://github.com/dashpole"><code>@dashpole</code></a> in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8793">open-telemetry/opentelemetry-go-contrib#8793</a></li> <li>chore(deps): update module github.com/ashanbrown/forbidigo/v2 to v2.3.1 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8804">open-telemetry/opentelemetry-go-contrib#8804</a></li> <li>chore(deps): update module github.com/ashanbrown/makezero/v2 to v2.2.1 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8802">open-telemetry/opentelemetry-go-contrib#8802</a></li> <li>chore(deps): update module github.com/manuelarte/funcorder to v0.6.0 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8803">open-telemetry/opentelemetry-go-contrib#8803</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-go-contrib/blob/main/CHANGELOG.md">go.opentelemetry.io/contrib/exporters/autoexport's changelog</a>.</em></p> <blockquote> <h2>[1.44.0/2.5.1/0.69.0/0.37.1/0.24.0/0.19.0/0.16.1/0.16.0] - 2026-05-28</h2> <h3>Added</h3> <ul> <li>Add <code>error.type</code> attribute to <code>http.client.request.duration</code> for transport failures in <code>otelhttp</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8801">#8801</a>)</li> <li>Add examples for prometheus compatibility document. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8716">#8716</a>)</li> <li>Add support for <code>cardinality_limits</code> in <code>PeriodicMetricReader</code> in <code>otelconf</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8885">#8885</a>)</li> <li>Add <code>Resource</code> method to <code>SDK</code> in <code>go.opentelemetry.io/contrib/otelconf/x</code> to expose the resolved SDK resource from declarative configuration. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8913">#8913</a>)</li> <li>Add <code>go.opentelemetry.io/contrib/detectors/hetzner</code>, a new resource detector for Hetzner Cloud servers, ported from <code>github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor/internal/hetzner</code>. Detects <code>cloud.provider</code>, <code>cloud.platform</code>, <code>cloud.region</code>, <code>cloud.availability_zone</code>, <code>host.id</code>, and <code>host.name</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8979">#8979</a>)</li> </ul> <h3>Changed</h3> <ul> <li>Set error field as <code>record.SetErr</code> instead of a plain attribute in <code>go.opentelemetry.io/contrib/bridges/otellogrus</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8776">#8776</a>)</li> <li>Set the "error" field (e.g. created via <code>zap.Error</code>) as <code>record.SetErr</code> instead of a plain attribute in <code>go.opentelemetry.io/contrib/bridges/otelzap</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8719">#8719</a>)</li> <li>Set fields implementing <code>error</code> interface from <code>slog</code> records as <code>record.SetErr</code> instead of plain attributes in <code>go.opentelemetry.io/contrib/bridges/otelslog</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8774">#8774</a>)</li> <li>Set emitted errors in <code>go.opentelemetry.io/contrib/bridges/otellogr</code> as record errors (<code>Record.SetErr</code>) instead of <code>exception.message</code> attributes. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8775">#8775</a>)</li> </ul> <h3>Fixed</h3> <ul> <li>Fix header attributes lost when using sub-spans in <code>go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8797">#8797</a>)</li> <li>Validate <code>encoding</code> configuration for OTLP HTTP exporters in <code>go.opentelemetry.io/contrib/otelconf</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8772">#8772</a>)</li> <li>Remove the custom body wrapper from the request's body after the request is processed to allow body type comparisons with the original type in <code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code> and <code>go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/6914">#6914</a>)</li> <li>Unknown or empty HTTP methods now report "_OTHER" instead of "GET" across all HTTP instrumentations to align with OpenTelemetry semantic conventions. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8868">#8868</a>)</li> <li>The default span name formatter in <code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code> now conforms to the OpenTelemetry HTTP semantic conventions for server span names. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8871">#8871</a>) <ul> <li>The default span name is now <code>{method} {route}</code> (e.g. <code>GET /foo/{id}</code>) when a route pattern is available, or <code>{method}</code> (e.g. <code>GET</code>) otherwise.</li> </ul> </li> </ul> <h3>Removed</h3> <ul> <li>Remove the deprecated <code>WithSpanOptions</code> option in <code>go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8991">#8991</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/03b2bcdb54b3dde73c9ff91ae216aec262f6c8f5"><code>03b2bcd</code></a> Release v1.44.0/v2.5.1/v0.69.0/v0.37.1/v0.24.0/v0.19.0/v0.16.1/v0.16.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9033">#9033</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/80c46d4037d5991ce324216a52cf7e8d7f2d81fa"><code>80c46d4</code></a> chore(deps): update module github.com/alecthomas/chroma/v2 to v2.26.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9034">#9034</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/51f292197d33b84a21b3c70ae21cb185a2570d5e"><code>51f2921</code></a> fix(deps): update module github.com/hetznercloud/hcloud-go/v2 to v2.41.2 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9026">#9026</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/db82162f1b642bb6dca7fa5be48045315bb466d6"><code>db82162</code></a> fix(deps): update aws-sdk-go-v2 monorepo (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9031">#9031</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/5a3e533d8cd4045128e61a966f6dad58964a78ea"><code>5a3e533</code></a> fix(deps): update module github.com/aws/smithy-go to v1.26.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9032">#9032</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/c67843c753a924faef17bc4aa63c138aa9472477"><code>c67843c</code></a> otelhttp: Remove custom wrapper after handling request (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/6914">#6914</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/c0a41352283151ab6655e88120e4ff4f0a917a2e"><code>c0a4135</code></a> docs(otelhttptrace): add performance guidance for WithoutSubSpans (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8785">#8785</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/a51a86790e1f4df231a70bb5fecc72b95d3c1bf0"><code>a51a867</code></a> otelconf: implement cardinality_limits support in PeriodicMetricReader (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8885">#8885</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/dead6e50fc0b5b3dc4aea288df207953dae5afe7"><code>dead6e5</code></a> chore(deps): update module go.yaml.in/yaml/v2 to v2.4.4 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8994">#8994</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/979ce1857524394d0884fd7c491722c5bcb43d50"><code>979ce18</code></a> chore(deps): update module github.com/jgautheron/goconst to v1.10.2 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9030">#9030</a>)</li> <li>Additional commits viewable in <a href="https://github.com/open-telemetry/opentelemetry-go-contrib/compare/zpages/v0.68.0...zpages/v0.69.0">compare view</a></li> </ul> </details> <br /> Updates `go.opentelemetry.io/contrib/propagators/autoprop` from 0.68.0 to 0.69.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-go-contrib/releases">go.opentelemetry.io/contrib/propagators/autoprop's releases</a>.</em></p> <blockquote> <h2>v1.44.0/v2.5.1/v0.69.0/v0.37.1/v0.24.0/v0.19.0/v0.16.1/v0.16.0</h2> <h3>Added</h3> <ul> <li>Add <code>error.type</code> attribute to <code>http.client.request.duration</code> for transport failures in <code>otelhttp</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8801">#8801</a>)</li> <li>Add examples for prometheus compatibility document. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8716">#8716</a>)</li> <li>Add support for <code>cardinality_limits</code> in <code>PeriodicMetricReader</code> in <code>otelconf</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8885">#8885</a>)</li> <li>Add <code>Resource</code> method to <code>SDK</code> in <code>go.opentelemetry.io/contrib/otelconf/x</code> to expose the resolved SDK resource from declarative configuration. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8913">#8913</a>)</li> <li>Add <code>go.opentelemetry.io/contrib/detectors/hetzner</code>, a new resource detector for Hetzner Cloud servers, ported from <code>github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor/internal/hetzner</code>. Detects <code>cloud.provider</code>, <code>cloud.platform</code>, <code>cloud.region</code>, <code>cloud.availability_zone</code>, <code>host.id</code>, and <code>host.name</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8979">#8979</a>)</li> </ul> <h3>Changed</h3> <ul> <li>Set error field as <code>record.SetErr</code> instead of a plain attribute in <code>go.opentelemetry.io/contrib/bridges/otellogrus</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8776">#8776</a>)</li> <li>Set the "error" field (e.g. created via <code>zap.Error</code>) as <code>record.SetErr</code> instead of a plain attribute in <code>go.opentelemetry.io/contrib/bridges/otelzap</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8719">#8719</a>)</li> <li>Set fields implementing <code>error</code> interface from <code>slog</code> records as <code>record.SetErr</code> instead of plain attributes in <code>go.opentelemetry.io/contrib/bridges/otelslog</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8774">#8774</a>)</li> <li>Set emitted errors in <code>go.opentelemetry.io/contrib/bridges/otellogr</code> as record errors (<code>Record.SetErr</code>) instead of <code>exception.message</code> attributes. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8775">#8775</a>)</li> </ul> <h3>Fixed</h3> <ul> <li>Fix header attributes lost when using sub-spans in <code>go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8797">#8797</a>)</li> <li>Validate <code>encoding</code> configuration for OTLP HTTP exporters in <code>go.opentelemetry.io/contrib/otelconf</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8772">#8772</a>)</li> <li>Remove the custom body wrapper from the request's body after the request is processed to allow body type comparisons with the original type in <code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code> and <code>go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/6914">#6914</a>)</li> <li>Unknown or empty HTTP methods now report "_OTHER" instead of "GET" across all HTTP instrumentations to align with OpenTelemetry semantic conventions. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8868">#8868</a>)</li> <li>The default span name formatter in <code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code> now conforms to the OpenTelemetry HTTP semantic conventions for server span names. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8871">#8871</a>) <ul> <li>The default span name is now <code>{method} {route}</code> (e.g. <code>GET /foo/{id}</code>) when a route pattern is available, or <code>{method}</code> (e.g. <code>GET</code>) otherwise.</li> </ul> </li> </ul> <h3>Removed</h3> <ul> <li>Remove the deprecated <code>WithSpanOptions</code> option in <code>go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8991">#8991</a>)</li> </ul> <h2>What's Changed</h2> <ul> <li>otelconf: validate encoding configuration for OTLP HTTP exporters by <a href="https://github.com/sonalgaud12"><code>@sonalgaud12</code></a> in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8772">open-telemetry/opentelemetry-go-contrib#8772</a></li> <li>fix(deps): update module github.com/aws/aws-sdk-go-v2/service/s3 to v1.99.0 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8780">open-telemetry/opentelemetry-go-contrib#8780</a></li> <li>chore(deps): update prom/prometheus docker tag to v3.11.1 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8779">open-telemetry/opentelemetry-go-contrib#8779</a></li> <li>otellogrus: Set error field as <code>record.SetErr</code> by <a href="https://github.com/sonalgaud12"><code>@sonalgaud12</code></a> in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8778">open-telemetry/opentelemetry-go-contrib#8778</a></li> <li>chore(deps): update module golang.org/x/sys to v0.43.0 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8783">open-telemetry/opentelemetry-go-contrib#8783</a></li> <li>chore(deps): update golang.org/x/telemetry digest to 93c7c8a by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8786">open-telemetry/opentelemetry-go-contrib#8786</a></li> <li>chore(deps): update module github.com/mattn/go-isatty to v0.0.21 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8787">open-telemetry/opentelemetry-go-contrib#8787</a></li> <li>chore(deps): update module github.com/mattn/go-runewidth to v0.0.23 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8788">open-telemetry/opentelemetry-go-contrib#8788</a></li> <li>chore(deps): update golang.org/x by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8791">open-telemetry/opentelemetry-go-contrib#8791</a></li> <li>chore(deps): update actions/github-script action to v9 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8795">open-telemetry/opentelemetry-go-contrib#8795</a></li> <li>fix(deps): update golang.org/x by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8794">open-telemetry/opentelemetry-go-contrib#8794</a></li> <li>otelzap: set error field as record.SetErr by <a href="https://github.com/iblancasa"><code>@iblancasa</code></a> in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8719">open-telemetry/opentelemetry-go-contrib#8719</a></li> <li>fix(deps): update golang.org/x to 746e56f by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8796">open-telemetry/opentelemetry-go-contrib#8796</a></li> <li>chore(deps): update module golang.org/x/arch to v0.26.0 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8798">open-telemetry/opentelemetry-go-contrib#8798</a></li> <li>Check if otelgrpc metrics are enabled by <a href="https://github.com/dashpole"><code>@dashpole</code></a> in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8792">open-telemetry/opentelemetry-go-contrib#8792</a></li> <li>chore(deps): update actions/upload-artifact action to v7.0.1 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8800">open-telemetry/opentelemetry-go-contrib#8800</a></li> <li>Check instrument enabled in deprecatedruntime by <a href="https://github.com/dashpole"><code>@dashpole</code></a> in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8793">open-telemetry/opentelemetry-go-contrib#8793</a></li> <li>chore(deps): update module github.com/ashanbrown/forbidigo/v2 to v2.3.1 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8804">open-telemetry/opentelemetry-go-contrib#8804</a></li> <li>chore(deps): update module github.com/ashanbrown/makezero/v2 to v2.2.1 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8802">open-telemetry/opentelemetry-go-contrib#8802</a></li> <li>chore(deps): update module github.com/manuelarte/funcorder to v0.6.0 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8803">open-telemetry/opentelemetry-go-contrib#8803</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-go-contrib/blob/main/CHANGELOG.md">go.opentelemetry.io/contrib/propagators/autoprop's changelog</a>.</em></p> <blockquote> <h2>[1.44.0/2.5.1/0.69.0/0.37.1/0.24.0/0.19.0/0.16.1/0.16.0] - 2026-05-28</h2> <h3>Added</h3> <ul> <li>Add <code>error.type</code> attribute to <code>http.client.request.duration</code> for transport failures in <code>otelhttp</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8801">#8801</a>)</li> <li>Add examples for prometheus compatibility document. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8716">#8716</a>)</li> <li>Add support for <code>cardinality_limits</code> in <code>PeriodicMetricReader</code> in <code>otelconf</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8885">#8885</a>)</li> <li>Add <code>Resource</code> method to <code>SDK</code> in <code>go.opentelemetry.io/contrib/otelconf/x</code> to expose the resolved SDK resource from declarative configuration. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8913">#8913</a>)</li> <li>Add <code>go.opentelemetry.io/contrib/detectors/hetzner</code>, a new resource detector for Hetzner Cloud servers, ported from <code>github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor/internal/hetzner</code>. Detects <code>cloud.provider</code>, <code>cloud.platform</code>, <code>cloud.region</code>, <code>cloud.availability_zone</code>, <code>host.id</code>, and <code>host.name</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8979">#8979</a>)</li> </ul> <h3>Changed</h3> <ul> <li>Set error field as <code>record.SetErr</code> instead of a plain attribute in <code>go.opentelemetry.io/contrib/bridges/otellogrus</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8776">#8776</a>)</li> <li>Set the "error" field (e.g. created via <code>zap.Error</code>) as <code>record.SetErr</code> instead of a plain attribute in <code>go.opentelemetry.io/contrib/bridges/otelzap</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8719">#8719</a>)</li> <li>Set fields implementing <code>error</code> interface from <code>slog</code> records as <code>record.SetErr</code> instead of plain attributes in <code>go.opentelemetry.io/contrib/bridges/otelslog</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8774">#8774</a>)</li> <li>Set emitted errors in <code>go.opentelemetry.io/contrib/bridges/otellogr</code> as record errors (<code>Record.SetErr</code>) instead of <code>exception.message</code> attributes. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8775">#8775</a>)</li> </ul> <h3>Fixed</h3> <ul> <li>Fix header attributes lost when using sub-spans in <code>go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8797">#8797</a>)</li> <li>Validate <code>encoding</code> configuration for OTLP HTTP exporters in <code>go.opentelemetry.io/contrib/otelconf</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8772">#8772</a>)</li> <li>Remove the custom body wrapper from the request's body after the request is processed to allow body type comparisons with the original type in <code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code> and <code>go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/6914">#6914</a>)</li> <li>Unknown or empty HTTP methods now report "_OTHER" instead of "GET" across all HTTP instrumentations to align with OpenTelemetry semantic conventions. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8868">#8868</a>)</li> <li>The default span name formatter in <code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code> now conforms to the OpenTelemetry HTTP semantic conventions for server span names. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8871">#8871</a>) <ul> <li>The default span name is now <code>{method} {route}</code> (e.g. <code>GET /foo/{id}</code>) when a route pattern is available, or <code>{method}</code> (e.g. <code>GET</code>) otherwise.</li> </ul> </li> </ul> <h3>Removed</h3> <ul> <li>Remove the deprecated <code>WithSpanOptions</code> option in <code>go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8991">#8991</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/03b2bcdb54b3dde73c9ff91ae216aec262f6c8f5"><code>03b2bcd</code></a> Release v1.44.0/v2.5.1/v0.69.0/v0.37.1/v0.24.0/v0.19.0/v0.16.1/v0.16.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9033">#9033</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/80c46d4037d5991ce324216a52cf7e8d7f2d81fa"><code>80c46d4</code></a> chore(deps): update module github.com/alecthomas/chroma/v2 to v2.26.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9034">#9034</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/51f292197d33b84a21b3c70ae21cb185a2570d5e"><code>51f2921</code></a> fix(deps): update module github.com/hetznercloud/hcloud-go/v2 to v2.41.2 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9026">#9026</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/db82162f1b642bb6dca7fa5be48045315bb466d6"><code>db82162</code></a> fix(deps): update aws-sdk-go-v2 monorepo (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9031">#9031</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/5a3e533d8cd4045128e61a966f6dad58964a78ea"><code>5a3e533</code></a> fix(deps): update module github.com/aws/smithy-go to v1.26.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9032">#9032</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/c67843c753a924faef17bc4aa63c138aa9472477"><code>c67843c</code></a> otelhttp: Remove custom wrapper after handling request (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/6914">#6914</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/c0a41352283151ab6655e88120e4ff4f0a917a2e"><code>c0a4135</code></a> docs(otelhttptrace): add performance guidance for WithoutSubSpans (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8785">#8785</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/a51a86790e1f4df231a70bb5fecc72b95d3c1bf0"><code>a51a867</code></a> otelconf: implement cardinality_limits support in PeriodicMetricReader (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8885">#8885</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/dead6e50fc0b5b3dc4aea288df207953dae5afe7"><code>dead6e5</code></a> chore(deps): update module go.yaml.in/yaml/v2 to v2.4.4 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8994">#8994</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go-contrib/commit/979ce1857524394d0884fd7c491722c5bcb43d50"><code>979ce18</code></a> chore(deps): update module github.com/jgautheron/goconst to v1.10.2 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9030">#9030</a>)</li> <li>Additional commits viewable in <a href="https://github.com/open-telemetry/opentelemetry-go-contrib/compare/zpages/v0.68.0...zpages/v0.69.0">compare view</a></li> </ul> </details> <br /> Updates `go.opentelemetry.io/otel` from 1.43.0 to 1.44.0 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md">go.opentelemetry.io/otel's changelog</a>.</em></p> <blockquote> <h2>[1.44.0/0.66.0/0.20.0/0.0.17] 2026-05-27</h2> <h3>Added</h3> <ul> <li>Add <code>ByteSlice</code> and <code>ByteSliceValue</code> functions for new <code>BYTESLICE</code> attribute type in <code>go.opentelemetry.io/otel/attribute</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/7948">#7948</a>)</li> <li>Apply attribute value limit to the <code>KindBytes</code> attribute type in <code>go.opentelemetry.io/otel/sdk/log</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/7990">#7990</a>)</li> <li>Apply attribute value limit to the <code>BYTESLICE</code> attribute type in <code>go.opentelemetry.io/otel/sdk/trace</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/7990">#7990</a>)</li> <li>Support <code>BYTESLICE</code> attributes in <code>go.opentelemetry.io/otel/trace</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li> <li>Support <code>BYTESLICE</code> attributes in <code>go.opentelemetry.io/otel/exporters/otlp/otlptrace</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li> <li>Support <code>BYTESLICE</code> attributes in <code>go.opentelemetry.io/otel/exporters/otlp/otlplog</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li> <li>Support <code>BYTESLICE</code> attributes in <code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li> <li>Support <code>BYTESLICE</code> attributes in <code>go.opentelemetry.io/otel/exporters/zipkin</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li> <li>Add <code>String</code> method for <code>Value</code> type in <code>go.opentelemetry.io/otel/attribute</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8142">#8142</a>)</li> <li>Add <code>Slice</code> and <code>SliceValue</code> functions for new <code>SLICE</code> attribute type in <code>go.opentelemetry.io/otel/attribute</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8166">#8166</a>)</li> <li>Support <code>SLICE</code> attributes in <code>go.opentelemetry.io/otel/exporters/otlp/otlptrace</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8216">#8216</a>)</li> <li>Support <code>SLICE</code> attributes in <code>go.opentelemetry.io/otel/exporters/otlp/otlplog</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8216">#8216</a>)</li> <li>Support <code>SLICE</code> attributes in <code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8216">#8216</a>)</li> <li>Support <code>SLICE</code> attributes in <code>go.opentelemetry.io/otel/exporters/zipkin</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8216">#8216</a>)</li> <li>Apply <code>AttributeValueLengthLimit</code> to <code>attribute.SLICE</code> type attribute values in <code>go.opentelemetry.io/otel/sdk/trace</code>, recursively truncating contained string values. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8217">#8217</a>)</li> <li>Add <code>Error</code> field on <code>Record</code> type in <code>go.opentelemetry.io/otel/log/logtest</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8148">#8148</a>)</li> <li>Add <code>WithMaxRequestSize</code> option in <code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li> <li>Add <code>WithMaxRequestSize</code> option in <code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li> <li>Add <code>WithMaxRequestSize</code> option in <code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li> <li>Add <code>WithMaxRequestSize</code> option in <code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li> <li>Add <code>WithMaxRequestSize</code> option in <code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li> <li>Add <code>WithMaxRequestSize</code> option in <code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li> <li>Add <code>Settable</code> to <code>go.opentelemetry.io/otel/metric/x</code> to allow reusing attribute options. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8178">#8178</a>)</li> <li>Add experimental support for splitting metric data across multiple batches in <code>go.opentelemetry.io/otel/sdk/metric</code>. Set <code>OTEL_GO_X_METRIC_EXPORT_BATCH_SIZE=<max_size></code> to enable for all periodic readers. See <code>go.opentelemetry.io/otel/sdk/metric/internal/x</code> for feature documentation. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8071">#8071</a>)</li> <li>Add experimental self-observability metrics in <code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc</code>. Enable with <code>OTEL_GO_X_SELF_OBSERVABILITY=true</code> environment variable. See <code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/x</code> for feature documentation. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8192">#8192</a>)</li> <li>Add experimental self-observability metrics in <code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp</code>. Enable with <code>OTEL_GO_X_SELF_OBSERVABILITY=true</code> environment variable. See <code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/x</code> for feature documentation. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8194">#8194</a>)</li> <li>Add experimental self-observability metrics in <code>go.opentelemetry.io/otel/exporters/stdout/stdoutlog</code>. Enable with <code>OTEL_GO_X_SELF_OBSERVABILITY=true</code> environment variable. See <code>go.opentelemetry.io/otel/stdout/stdoutlog/internal/x</code> for feature documentation. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8263">#8263</a>)</li> <li>Add <code>WithDefaultAttributes</code> to <code>go.opentelemetry.io/otel/metric/x</code> to support setting default attributes on instruments. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8135">#8135</a>)</li> <li>Add <code>go.opentelemetry.io/otel/semconv/v1.41.0</code> package. The package contains semantic conventions from the <code>v1.41.0</code> version of the OpenTelemetry Semantic Conventions. See the <a href="https://github.com/open-telemetry/opentelemetry-go/blob/main/semconv/v1.41.0/MIGRATION.md">migration documentation</a> for information on how to upgrade from <code>go.opentelemetry.io/otel/semconv/v1.40.0</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8324">#8324</a>)</li> <li>Add Observable variants of instruments to <code>go.opentelemetry.io/otel/semconv/v1.41.0</code> package. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8350">#8350</a>)</li> <li>Generate explicit histogram bucket boundaries from weaver configuration for HTTP and RPC duration instruments in <code>go.opentelemetry.io/otel/semconv/v1.41.0</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8002">#8002</a>)</li> </ul> <h3>Changed</h3> <ul> <li>⚠️ <strong>Breaking Change:</strong> <code>go.opentelemetry.io/otel/sdk/metric</code> now applies a default cardinality limit of 2000 to comply with the Metrics SDK specification recommendation. New attribute sets are dropped when the cardinality limit is reached. The measurement of these sets are aggregated into a special attribute set containing <code>attribute.Bool("otel.metric.overflow", true)</code>.</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/open-telemetry/opentelemetry-go/commit/b62d92831b2dd142f5a0cc89c828270274196877"><code>b62d928</code></a> Release 1.44.0 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8376">#8376</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go/commit/94132a0a729e94c5aa6e9e1ce7640c0f802dcfea"><code>94132a0</code></a> chore(deps): update golang.org/x/telemetry digest to 5997936 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8379">#8379</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go/commit/6fdcf82adfebc3becfb5d357957546d6d7258469"><code>6fdcf82</code></a> feat: add self-observability metrics to otlpmetricgrpc metric exporters (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8192">#8192</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go/commit/761bbfc2f4ae002f4a54f8c57c12b8a58135a741"><code>761bbfc</code></a> fix(deps): update golang.org/x (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8377">#8377</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go/commit/3a91dc62d3852313bab40ff151bb3e11fae1745e"><code>3a91dc6</code></a> fix(deps): update googleapis to 3dc84a4 (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8375">#8375</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go/commit/f593185679130f56e14bed3c337fa7f8f60756b1"><code>f593185</code></a> exporters/otlp: default max request size to 64 MiB (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8365">#8365</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go/commit/f02feacf8652b69c051851cfa2945d2ed5f0d568"><code>f02feac</code></a> Merge commit from fork</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go/commit/36c2f1bfd1a6a789dc575f8886399093d7600586"><code>36c2f1b</code></a> semconvkit: add invariant test for histogram-exclusion rule (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8370">#8370</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go/commit/d0b6cbdff5346557923fd05bd3f5f34df002aeee"><code>d0b6cbd</code></a> sdk/metric: document unit-sensitivity of DefaultAggregationSelector (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8224">#8224</a>)</li> <li><a href="https://github.com/open-telemetry/opentelemetry-go/commit/9a68034bd45c6f24c481d9f9c87ebbee0a61482f"><code>9a68034</code></a> add self observability for stdout exporter (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8263">#8263</a>)</li> <li>Additional commits viewable in <a href="https://github.com/open-telemetry/opentelemetry-go/compare/v1.43.0...v1.44.0">compare view</a></li> </ul> </details> <br /> Updates `go.opentelemetry.io/otel/exporters/prometheus` from 0.65.0 to 0.66.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-go/releases">go.opentelemetry.io/otel/exporters/prometheus's releases</a>.</em></p> <blockquote> <h2>v1.44.0/v0.66.0/v0.20.0/v0.0.17</h2> <h3>Added</h3> <ul> <li>Add <code>ByteSlice</code> and <code>ByteSliceValue</code> functions for new <code>BYTESLICE</code> attribute type in <code>go.opentelemetry.io/otel/attribute</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/7948">#7948</a>)</li> <li>Apply attribute value limit to the <code>KindBytes</code> attribute type in <code>go.opentelemetry.io/otel/sdk/log</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/7990">#7990</a>)</li> <li>Apply attribute value limit to the <code>BYTESLICE</code> attribute type in <code>go.opentelemetry.io/otel/sdk/trace</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/7990">#7990</a>)</li> <li>Support <code>BYTESLICE</code> attributes in <code>go.opentelemetry.io/otel/trace</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li> <li>Support <code>BYTESLICE</code> attributes in <code>go.opentelemetry.io/otel/exporters/otlp/otlptrace</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li> <li>Support <code>BYTESLICE</code> attributes in <code>go.opentelemetry.io/otel/exporters/otlp/otlplog</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li> <li>Support <code>BYTESLICE</code> attributes in <code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li> <li>Support <code>BYTESLICE</code> attributes in <code>go.opentelemetry.io/otel/exporters/zipkin</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li> <li>Add <code>String</code> method for <code>Value</code> type in <code>go.opentelemetry.io/otel/attribute</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8142">#8142</a>)</li> <li>Add <code>Slice</code> and <code>SliceValue</code> functions for new <code>SLICE</code> attribute type in <code>go.opentelemetry.io/otel/attribute</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8166">#8166</a>)</li> <li>Support <code>SLICE</code> attributes in <code>go.opentelemetry.io/otel/exporters/otlp/otlptrace</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8216">#8216</a>)</li> <li>Support <code>SLICE</code> attributes in <code>go.opentelemetry.io/otel/exporters/otlp/otlplog</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8216">#8216</a>)</li> <li>Support <code>SLICE</code> attributes in <code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8216">#8216</a>)</li> <li>Support <code>SLICE</code> attributes in <code>go.opentelemetry.io/otel/exporters/zipkin</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8216">#8216</a>)</li> <li>Apply <code>AttributeValueLengthLimit</code> to <code>attribute.SLICE</code> type attribute values in <code>go.opentelemetry.io/otel/sdk/trace</code>, recursively truncating contained string values. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8217">#8217</a>)</li> <li>Add <code>Error</code> field on <code>Record</code> type in <code>go.opentelemetry.io/otel/log/logtest</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8148">#8148</a>)</li> <li>Add <code>WithMaxRequestSize</code> option in <code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li> <li>Add <code>WithMaxRequestSize</code> option in <code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li> <li>Add <code>WithMaxRequestSize</code> option in <code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li> <li>Add <code>WithMaxRequestSize</code> option in <code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li> <li>Add <code>WithMaxRequestSize</code> option in <code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li> <li>Add <code>WithMaxRequestSize</code> option in <code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li> <li>Add <code>Settable</code> to <code>go.opentelemetry.io/otel/metric/x</code> to allow reusing attribute options. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8178">#8178</a>)</li> <li>Add experimental support for splitting metric data across multiple batches in <code>go.opentelemetry.io/otel/sdk/metric</code>. Set <code>OTEL_GO_X_METRIC_EXPORT_BATCH_SIZE=<max_size></code> to enable for all periodic readers. See <code>go.opentelemetry.io/otel/sdk/metric/internal/x</code> for feature documentation. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8071">#8071</a>)</li> <li>Add experimental self-observability metrics in <code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc</code>. Enable with <code>OTEL_GO_X_SELF_OBSERVABILITY=true</code> environment variable. See <code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/x</code> for feature documentation. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8192">#8192</a>)</li> <li>Add experimental self-observability metrics in <code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp</code>. Enable with <code>OTEL_GO_X_SELF_OBSERVABILITY=true</code> environment variable. See <code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/x</code> for feature documentation. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8194">#8194</a>)</li> <li>Add experimental self-observability metrics in <code>go.opentelemetry.io/otel/exporters/stdout/stdoutlog</code>. Enable with <code>OTEL_GO_X_SELF_OBSERVABILITY=true</code> environment variable. See <code>go.opentelemetry.io/otel/stdout/stdoutlog/internal/x</code> for feature documentation. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8263">#8263</a>)</li> <li>Add <code>WithDefaultAttributes</code> to <code>go.opentelemetry.io/otel/metric/x</code> to support setting default attributes on instruments. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8135">#8135</a>)</li> <li>Add <code>go.opentelemetry.io/otel/semconv/v1.41.0</code> package. The package contains semantic conventions from the <code>v1.41.0</code> version of the OpenTelemetry Semantic Conventions. See the <a href="https://github.com/open-telemetry/opentelemetry-go/blob/HEAD/semconv/v1.41.0/MIGRATION.md">migration documentation</a> for information on how to upgrade from <code>go.opentelemetry.io/otel/semconv/v1.40.0</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8324">#8324</a>)</li> <li>Add Observable variants of instruments to <code>go.opentelemetry.io/otel/semconv/v1.41.0</code> package. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8350">#8350</a>)</li> <li>Generate explicit histogram bucket boundaries from weaver configuration for HTTP and RPC duration instruments in <code>go.opentelemetry.io/otel/semconv/v1.41.0</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8002">#8002</a>)</li> </ul> <h3>Changed</h3> <ul> <li>⚠️ <strong>Breaking Change:</strong> <code>go.opentelemetry.io/otel/sdk/metric</code> now applies a default cardinality limit of 2000 to comply with the Metrics SDK specification recommendation. New attribute sets are dropped when the cardinality limit is reached. The measurement of these sets are aggregated into a special attribute set containing <code>attribute.Bool("otel.metric.overflow", true)</code>. This can break users who relied on the previous unlimited default.</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md">go.opentelemetry.io/otel/exporters/prometheus's changelog</a>.</em></p> <blockquote> <h2>[1.44.0/0.66.0/0.20.0/0.0.17] 2026-05-27</h2> <h3>Added</h3> <ul> <li>Add <code>ByteSlice</code> and <code>ByteSliceValue</code> functions for new <code>BYTESLICE</code> attribute type in <code>go.opentelemetry.io/otel/attribute</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/7948">#7948</a>)</li> <li>Apply attribute value limit to the <code>KindBytes</code> attribute type in <code>go.opentelemetry.io/otel/sdk/log</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/7990">#7990</a>)</li> <li>Apply attribute value limit to the <code>BYTESLICE</code> attribute type in <code>go.opentelemetry.io/otel/sdk/trace</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/7990">#7990</a>)</li> <li>Support <code>BYTESLICE</code> attributes in <code>go.opentelemetry.io/otel/trace</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li> <li>Support <code>BYTESLICE</code> attributes in <code>go.opentelemetry.io/otel/exporters/otlp/otlptrace</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li> <li>Support <code>BYTESLICE</code> attributes in <code>go.opentelemetry.io/otel/exporters/otlp/otlplog</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li> <li>Support <code>BYTESLICE</code> attributes in <code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li> <li>Support <code>BYTESLICE</code> attributes in <code>go.opentelemetry.io/otel/exporters/zipkin</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8153">#8153</a>)</li> <li>Add <code>String</code> method for <code>Value</code> type in <code>go.opentelemetry.io/otel/attribute</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8142">#8142</a>)</li> <li>Add <code>Slice</code> and <code>SliceValue</code> functions for new <code>SLICE</code> attribute type in <code>go.opentelemetry.io/otel/attribute</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8166">#8166</a>)</li> <li>Support <code>SLICE</code> attributes in <code>go.opentelemetry.io/otel/exporters/otlp/otlptrace</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8216">#8216</a>)</li> <li>Support <code>SLICE</code> attributes in <code>go.opentelemetry.io/otel/exporters/otlp/otlplog</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8216">#8216</a>)</li> <li>Support <code>SLICE</code> attributes in <code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8216">#8216</a>)</li> <li>Support <code>SLICE</code> attributes in <code>go.opentelemetry.io/otel/exporters/zipkin</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8216">#8216</a>)</li> <li>Apply <code>AttributeValueLengthLimit</code> to <code>attribute.SLICE</code> type attribute values in <code>go.opentelemetry.io/otel/sdk/trace</code>, recursively truncating contained string values. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8217">#8217</a>)</li> <li>Add <code>Error</code> field on <code>Record</code> type in <code>go.opentelemetry.io/otel/log/logtest</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8148">#8148</a>)</li> <li>Add <code>WithMaxRequestSize</code> option in <code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li> <li>Add <code>WithMaxRequestSize</code> option in <code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li> <li>Add <code>WithMaxRequestSize</code> option in <code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li> <li>Add <code>WithMaxRequestSize</code> option in <code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li> <li>Add <code>WithMaxRequestSize</code> option in <code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li> <li>Add <code>WithMaxRequestSize</code> option in <code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8157">#8157</a>)</li> <li>Add <code>Settable</code> to <code>go.opentelemetry.io/otel/metric/x</code> to allow reusing attribute options. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8178">#8178</a>)</li> <li>Add experimental support for splitting metric data across multiple batches in <code>go.opentelemetry.io/otel/sdk/metric</code>. Set <code>OTEL_GO_X_METRIC_EXPORT_BATCH_SIZE=<max_size></code> to enable for all periodic readers. See <code>go.opentelemetry.io/otel/s…
… github-actions group (envoyproxy#2221) Bumps the github-actions group with 1 update: [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action). Updates `docker/setup-qemu-action` from 4.0.0 to 4.1.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/docker/setup-qemu-action/releases">docker/setup-qemu-action's releases</a>.</em></p> <blockquote> <h2>v4.1.0</h2> <ul> <li>Add <code>reset</code> input to uninstall current emulators by <a href="https://github.com/crazy-max"><code>@crazy-max</code></a> in <a href="https://redirect.github.com/docker/setup-qemu-action/pull/21">docker/setup-qemu-action#21</a></li> <li>Bump <code>@docker/actions-toolkit</code> from 0.77.0 to 0.91.0 in <a href="https://redirect.github.com/docker/setup-qemu-action/pull/250">docker/setup-qemu-action#250</a> <a href="https://redirect.github.com/docker/setup-qemu-action/pull/247">docker/setup-qemu-action#247</a></li> <li>Bump brace-expansion from 1.1.12 to 1.1.15 in <a href="https://redirect.github.com/docker/setup-qemu-action/pull/265">docker/setup-qemu-action#265</a></li> <li>Bump fast-xml-builder from 1.0.0 to 1.2.0 in <a href="https://redirect.github.com/docker/setup-qemu-action/pull/286">docker/setup-qemu-action#286</a></li> <li>Bump fast-xml-parser from 5.4.2 to 5.8.0 in <a href="https://redirect.github.com/docker/setup-qemu-action/pull/255">docker/setup-qemu-action#255</a></li> <li>Bump flatted from 3.3.3 to 3.4.2 in <a href="https://redirect.github.com/docker/setup-qemu-action/pull/257">docker/setup-qemu-action#257</a></li> <li>Bump glob from 10.3.15 to 10.5.0 in <a href="https://redirect.github.com/docker/setup-qemu-action/pull/254">docker/setup-qemu-action#254</a></li> <li>Bump handlebars from 4.7.8 to 4.7.9 in <a href="https://redirect.github.com/docker/setup-qemu-action/pull/262">docker/setup-qemu-action#262</a></li> <li>Bump lodash from 4.17.23 to 4.18.1 in <a href="https://redirect.github.com/docker/setup-qemu-action/pull/273">docker/setup-qemu-action#273</a></li> <li>Bump postcss from 8.5.6 to 8.5.10 in <a href="https://redirect.github.com/docker/setup-qemu-action/pull/285">docker/setup-qemu-action#285</a></li> <li>Bump tar from 6.2.1 to 7.5.15 in <a href="https://redirect.github.com/docker/setup-qemu-action/pull/287">docker/setup-qemu-action#287</a></li> <li>Bump tmp from 0.2.5 to 0.2.6 in <a href="https://redirect.github.com/docker/setup-qemu-action/pull/291">docker/setup-qemu-action#291</a></li> <li>Bump undici from 6.23.0 to 6.26.0 in <a href="https://redirect.github.com/docker/setup-qemu-action/pull/251">docker/setup-qemu-action#251</a></li> <li>Bump vite from 7.3.1 to 7.3.2 in <a href="https://redirect.github.com/docker/setup-qemu-action/pull/271">docker/setup-qemu-action#271</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/docker/setup-qemu-action/compare/v4.0.0...v4.1.0">https://github.com/docker/setup-qemu-action/compare/v4.0.0...v4.1.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/docker/setup-qemu-action/commit/06116385d9baf250c9f4dcb4858b16962ea869c3"><code>0611638</code></a> Merge pull request <a href="https://redirect.github.com/docker/setup-qemu-action/issues/21">#21</a> from crazy-max/uninst</li> <li><a href="https://github.com/docker/setup-qemu-action/commit/ce59c818a5ff16552ddf7407ee7cb00bea682925"><code>ce59c81</code></a> chore: update generated content</li> <li><a href="https://github.com/docker/setup-qemu-action/commit/2ddad4401e17fa807e8a3c4bd289ccdd993f0868"><code>2ddad44</code></a> uninstall current emulators</li> <li><a href="https://github.com/docker/setup-qemu-action/commit/8c37cd6f3456e1f3f3026250eac496709e9e7e10"><code>8c37cd6</code></a> Merge pull request <a href="https://redirect.github.com/docker/setup-qemu-action/issues/250">#250</a> from docker/dependabot/npm_and_yarn/docker/actions-to...</li> <li><a href="https://github.com/docker/setup-qemu-action/commit/d1a0ff34af591b8e290e46f3fa114ef5bb81cd1c"><code>d1a0ff3</code></a> chore: update generated content</li> <li><a href="https://github.com/docker/setup-qemu-action/commit/0a8f3dc12541cc2c3b19c182a1a2c90a2c8b8d93"><code>0a8f3dc</code></a> build(deps): bump <code>@docker/actions-toolkit</code> from 0.79.0 to 0.91.0</li> <li><a href="https://github.com/docker/setup-qemu-action/commit/9430f61a7691bd1bfdc4d6ba70e558659d36fa7a"><code>9430f61</code></a> Merge pull request <a href="https://redirect.github.com/docker/setup-qemu-action/issues/291">#291</a> from docker/dependabot/npm_and_yarn/tmp-0.2.6</li> <li><a href="https://github.com/docker/setup-qemu-action/commit/978bd7796cb6698377e7af6726b726e5ced642d0"><code>978bd77</code></a> chore: update generated content</li> <li><a href="https://github.com/docker/setup-qemu-action/commit/3479febc62cc0fbcb98c7c7fc0dac778c0d79d6a"><code>3479feb</code></a> build(deps): bump tmp from 0.2.5 to 0.2.6</li> <li><a href="https://github.com/docker/setup-qemu-action/commit/b113c264143c28c2974bed61af25be32d32f4782"><code>b113c26</code></a> Merge pull request <a href="https://redirect.github.com/docker/setup-qemu-action/issues/255">#255</a> from docker/dependabot/npm_and_yarn/fast-xml-parser-5...</li> <li>Additional commits viewable in <a href="https://github.com/docker/setup-qemu-action/compare/ce360397dd3f832beb865e1373c09c0e9f86d70a...06116385d9baf250c9f4dcb4858b16962ea869c3">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: yxia216 <yxia216@bloomberg.net>
**Description** Adds stacklok to adopters page --------- Signed-off-by: Chris Burns <29541485+ChrisJBurns@users.noreply.github.com> Signed-off-by: yxia216 <yxia216@bloomberg.net>
…roxy#2225) **Description** The request body we send to GCP Vertex AI (the Gemini generateContent API) had a few field names in the wrong style. Vertex expects camelCase names like `generationConfig` and `systemInstruction`, but three of them were written in snake_case (`generation_config`, `system_instruction`, `tool_config`). The `safetySettings` field was already camelCase, so the struct was inconsistent with itself. This updates those three names to camelCase so they all match the format Vertex documents and the format the `google.golang.org/genai` library uses. Vertex does accept the snake_case versions as well, so this isn't fixing broken behaviour, but it removes the inconsistency and means we're no longer relying on that leniency. I also updated the tests that were asserting the old snake_case output. While I was in there, I replaced some hardcoded content-length values in the unit test with a check that the content-length header matches the actual body length. Those fixed numbers would have needed recalculating every time the body changed by even a byte, and the new check stays correct on its own. Testing: the existing unit tests and the data plane tests pass, including the GCP Vertex AI cases that exercise the request body end to end. Signed-off-by: Chris Burns <29541485+ChrisJBurns@users.noreply.github.com> Signed-off-by: yxia216 <yxia216@bloomberg.net>
…m chart (envoyproxy#2226) **Description** The controller and inference-pool `ClusterRole`/`ClusterRoleBinding` names are built with `printf "%s:%s" <base> .Release.Namespace` to keep them unique per-release (introduced in envoyproxy#1511). When `.Release.Namespace` is empty, this renders `name: <base>:` — an unquoted trailing colon that strict YAML parsers reject with `mapping values are not allowed in this context`. The whole render fails and zero resources are produced. This doesn't trigger via `helm install` or `helm template` (the CLI always defaults the namespace), only where a renderer leaves it unset — e.g. the Helm SDK's `engine.Render` without `ReleaseOptions`, or Replicated's image-extraction render. The fix adds two independent layers of defense across the three affected helpers (`_helpers.tpl`) and their six call sites (`serviceaccount.yaml`, `envoy_gateway_cluster_role_for_inference_pool.yaml`): - Wrap the namespace in `default "default"` so the `printf` argument is never empty. No behavior change for real installs, where the namespace is always populated. - Quote the rendered `name` fields so a trailing colon is always unambiguous. Either layer fixes the failure on its own; both are included for robustness. **Special notes for reviewers (if applicable)** Verified with `helm lint` and `helm template` (default and explicit namespaces) — names render correctly as `<base>:<namespace>` with no change to existing behavior. Signed-off-by: Chris Burns <29541485+ChrisJBurns@users.noreply.github.com> Signed-off-by: yxia216 <yxia216@bloomberg.net>
…oyproxy#2191) **Description** In the OpenAI-to-AWS-Bedrock message converter, Bedrock Converse rejects assistant messages with empty content arrays. Some clients send empty assistant messages. This skips them when they have no content blocks. Tool-call-only messages are preserved. Fixes envoyproxy#2208 Signed-off-by: Linus Schlumberger <linus.schlumberger@siemens.com> Co-authored-by: Ignasi Barrera <ignasi@tetrate.io> Signed-off-by: yxia216 <yxia216@bloomberg.net>
…oyproxy#2170) **Description** **Scope:** this PR fixes the narrow case where the upstream cluster ext_proc filter issued `CONTINUE_AND_REPLACE` even though *nothing in the request pipeline needed to mutate the body* — no translation, no model override, no retry, no backend `HTTPBodyMutation`. In that path, the upstream filter replayed `u.parent.originalRequestBodyRaw` (snapshotted at the router phase), which clobbered any body mutation applied by an earlier ext_proc filter in the listener chain. After this PR, that path emits `CONTINUE` and leaves the body alone. The broader question of "preserve an intermediate filter's body mutation across translation / retries / `HTTPBodyMutation`" is **not** addressed by this PR. When `wantBodyReplace == true`, the replacement body is still derived from the router-phase snapshot, so any intermediate filter's mutation is lost on those branches. That's an architectural property of the snapshot-at-router- phase design — the upstream filter has no view of Envoy's current body, by design, to avoid re-buffering through ext_proc at the upstream phase. Fixing it requires a separate design (either re-buffering at upstream, or propagating a diff via dynamic metadata) and should be its own PR. **Root cause of the narrow bug.** The existing safety net in `applyBodyMutation` looks like it covers the no-config case: if bodyMutator == nil { return bodyMutation } but it does not fire in practice. `bodymutator.NewBodyMutator(nil, ...)` returns a non-nil struct even when its `*filterapi.HTTPBodyMutation` argument is nil. So the early-return is dead code; the function falls through, calls `Mutate(originalRequestBodyRaw)` on a no-config mutator (which returns its input unchanged), wraps that in a `BodyMutation`, and the upstream filter sends `CONTINUE_AND_REPLACE` with the original body — even though nothing asked for a body replacement. **Fix:** * Add `BodyMutator.HasMutations()` predicate. `NewBodyMutator`'s contract is unchanged (it still returns non-nil); callers can ask whether the mutator actually has anything to do. * In `upstreamProcessor.ProcessRequestHeaders`, compute mutatorHasMutations := u.bodyMutator != nil && u.bodyMutator.HasMutations() wantBodyReplace := bodyMutation != nil || forceBodyMutation || mutatorHasMutations before calling `applyBodyMutation`. When false, skip the body-mutation work and emit `CONTINUE` instead of `CONTINUE_AND_REPLACE`, preserving translator header mutations (e.g. path rewrite), header-mutator output, and auth-handler header additions. Skip the content-length dynamic-metadata restamp on the `CONTINUE` branch since the body length did not change. All existing `CONTINUE_AND_REPLACE` callers stay on the existing path (these are the branches where this PR explicitly does not change behavior, including the loss-of-earlier-mutation property documented above): * Translator emits a body (AWS Bedrock/SigV4, OpenAI to Anthropic, OpenAI to Vertex, etc.) — `bodyMutation != nil`. * Backend `HTTPBodyMutation` configured — `HasMutations() == true`. * Retry — `forceBodyMutation == true` via `u.onRetry()`. * Streaming with `IncludeUsage=false` — `forceBodyMutation == true`. * Model override — translator emits `newBody` via `sjson.SetBytesOptions`, so `bodyMutation != nil`. **Tests:** * Added `Test_chatCompletionProcessorUpstreamFilter_ProcessRequestHeaders_BodyReplaceContract` with two subtests: * `no translator body, no mutator, no force -> CONTINUE` exercises the previously untested path. Asserts `Status == CONTINUE`, no `BodyMutation`, preserved translator and auth-handler header mutations, and `DynamicMetadata == nil` (no content-length restamp). * `translator body present -> CONTINUE_AND_REPLACE` pins the existing behavior so a future refactor cannot quietly flip the contract back. The coverage gap that let this ship: every existing `t.Run("ok", ...)` subtest under `Test_chatCompletionProcessorUpstreamFilter_ProcessRequestHeaders` set `retBodyMutation` on the mock translator, so the "translator returns nil body" path was never exercised. **Related Issues/PRs (if applicable)** None. **Special notes for reviewers (if applicable)** * The fix is request-side only. Response-side code is untouched. * `NewBodyMutator`'s contract is intentionally not changed (it still returns non-nil even when given a nil `*filterapi.HTTPBodyMutation`). A predicate is added instead, to keep the blast radius local to `ProcessRequestHeaders`. If reviewers prefer changing the constructor to return nil in the no-config case, that is a larger refactor and a separate PR. * The bug is in the generic `upstreamProcessor[...]`, so the fix applies to every endpoint spec (chat completions, messages, embeddings, completions, GCP, AWS Bedrock, etc.). The new tests exercise one endpoint spec for the same reason the existing `ProcessRequestHeaders` table-test does — locking the generic method's contract. Signed-off-by: Chris Burns <29541485+ChrisJBurns@users.noreply.github.com> Co-authored-by: Ignasi Barrera <ignasi@tetrate.io> Signed-off-by: yxia216 <yxia216@bloomberg.net>
**Description** **Problem** If a buffer filter (`envoy.filters.http.buffer`) is added to the chain, for example via an EnvoyPatchPolicy to raise the request buffer limit, the AI Gateway extproc could be placed ahead of it. The AI Gateway extproc runs with `RequestBodyMode: BUFFERED`, so when it runs before the buffer filter it buffers the body against Envoy Gateway's default 32 KiB downstream per-connection limit and returns `413 Payload Too Large` for larger bodies before the buffer filter's higher limit applies. The buffer filter raises the stream's buffer limit to `max_request_bytes`, but only for filters that decode after it. This was hit in practice with large request bodies such as Gemini CLI tool definitions. **Solution** When a buffer filter sits at or after the computed ext_proc insertion point, insert the AI Gateway extproc immediately after the last buffer filter. Envoy Gateway already orders the buffer filter before ext_proc, so this honors that order. Behavior is unchanged when no buffer filter is present. This works because EnvoyPatchPolicy patches are applied before the extension hook runs and Envoy Gateway does not re-sort filters afterward, so the buffer filter is visible to this code. The extension server only moves its own filter, not the user's buffer filter, so this fixes the 413 for AI Gateway's extproc specifically and not for other co-resident BUFFERED ext_procs. **Testing** Added table tests for three cases: ext_proc before buffer (inserted after buffer), buffer before ext_proc (inserted after buffer), and no buffer filter (unchanged). Signed-off-by: Chris Burns <29541485+ChrisJBurns@users.noreply.github.com> Co-authored-by: Ignasi Barrera <ignasi@tetrate.io> Signed-off-by: yxia216 <yxia216@bloomberg.net>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
**Description** This updates the homepage info Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com> Signed-off-by: yxia216 <yxia216@bloomberg.net>
Signed-off-by: Ignasi Barrera <nacx@apache.org> Signed-off-by: yxia216 <yxia216@bloomberg.net>
**Description** Limit by default the size of MCP request payloads. **Related Issues/PRs (if applicable)** N/A **Special notes for reviewers (if applicable)** N/A Signed-off-by: Ignasi Barrera <nacx@apache.org> Signed-off-by: yxia216 <yxia216@bloomberg.net>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
7788e25 to
9719b8f
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #2239 +/- ##
==========================================
- Coverage 84.74% 84.70% -0.05%
==========================================
Files 144 144
Lines 21210 21204 -6
==========================================
- Hits 17975 17960 -15
- Misses 2153 2162 +9
Partials 1082 1082 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
/retest |
Signed-off-by: yxia216 <yxia216@bloomberg.net>
Signed-off-by: yxia216 <yxia216@bloomberg.net>
|
/gemini review |
|
Warning Gemini encountered an error creating the review. You can try again by commenting |
|
/gemini review |
There was a problem hiding this comment.
Code Review
This pull request refactors the Anthropic stream parser to avoid modifying cache token details during message_delta events, as these are already set in message_start. It also adds comprehensive unit tests for streaming token usage and updates mock SSE responses in integration tests. The review feedback points out that the added comment in anthropic_helper.go is inaccurate: message_delta contains total accumulated output tokens rather than incremental ones, and ignoring cache tokens there is necessary to prevent double-counting when upstreams include full usage details in delta events. A suggestion was provided to clarify this in the code comment.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
Signed-off-by: yxia216 <yxia216@bloomberg.net>
9535b90 to
bbdb144
Compare
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: hustxiayang <yangxiast@gmail.com>
|
@yuzisun Do you mind to review this? I have update the tests |
| if output, ok := usage.OutputTokens(); ok { | ||
| p.tokenUsage.AddOutputTokens(output) | ||
| } | ||
| // Update input tokens to include any cache tokens from delta |
There was a problem hiding this comment.
I missed this PR when I was working on #2241.
After discussing offline with @hustxiayang and @yuzisun, we agreed to remove the extra cache token counting from message_start and instead rely on message_delta, which is the provider's final source of truth in streaming mode.
This keeps the logic cleaner and avoids edge cases like the one here: https://github.com/envoyproxy/ai-gateway/pull/2241/changes#diff-aa8ea9f59fc3acd18cfd4a4c571d683817274a213b6a5fad0ab6085cfe0912dfL974-L980.
|
@yuzisun About whether to set input tokens in the start message or the delta message, the anthropic's definition is like and the start message's definition: The difference is that |
|
there is no difference when there is a disconnection or 529 error in the middle of the stream, because it's just to set the value into an intermediate structure ( |
Then we should get all inputs including cache read/write tokens in the start message since they are set before token streaming. |
@yuzisun I think the current implementation is set like this. You could check line 971-979, these values are set in the start message. |
| // Accumulate cache creation tokens | ||
| p.tokenUsage.AddCacheCreationInputTokens(cacheCreation) | ||
| } | ||
| // Cache token details are already set in message_start — don't touch them here |
There was a problem hiding this comment.
Can you move the comment above, looks odd for comments without code
There was a problem hiding this comment.
Thanks, I updated the comment.
Signed-off-by: yxia216 <yxia216@bloomberg.net>
|
@yuzisun could you please help to merge it as well. Thanks! |
Description
ExtractTokenUsageFromExplicitCachingis called in both start message and the delta message, as a result. The usage report is not correct.Fix: remove the accumulation in the message delta; also the previous tests can pass because the test cases did not mock the real cases, update all related tests cases as well.